cmake_minimum_required(VERSION 3.20)

project(CppHodgepodge LANGUAGES CXX C) #需要显示指定C才能正常编译c程序，否则cmake不会初始化c编译器相关配置

# 项目配置选项由CMakePresets.json提供进行管理
# cmake --preset=<name> 来配置编译环境
# - default: 适用linux环境，使用ninja工具，编译release版本
# - debug: 适用linux环境，使用ninja工具，编译debug版本
# - windows: 适用windows环境，使用MinGW，编译release版本
# - windows-debug: 适用windows环境，使用MinGW，编译debug版本

set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})

include(CTest)
include(cmake/utils.cmake)

if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
    find_package(PkgConfig REQUIRED)
    find_program(CCACHE_PROGRAM ccache)
    if(CCACHE_PROGRAM)
        # message(STATUS "Use ccache")
        set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
        set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
    endif()
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
    message(FATAL_ERROR "Windows platform is not supported yet.")
else()
    message(FATAL_ERROR "Unsupported platform: ${CMAKE_SYSTEM_NAME}")
endif()

include_directories(
    ${CMAKE_SOURCE_DIR}/inc
)

add_compile_definitions(PROJECT_DIR="${CMAKE_CURRENT_SOURCE_DIR}")

enable_testing()

add_valid_subdir()
